package com.jiangxjsy.admin.mapper;

import com.jiangxjsy.model.admin.bo.AdminRoleBO;
import com.jiangxjsy.model.admin.entity.AdminRole;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * wukong-crm-master
 * 蒋胜宇
 * 2025/6/6 16:11
 */

public interface AdminRoleMapper {
    /**
     * 根据角色备注查询角色
     *
     * @param remark 角色备注
     * @return 角色
     */
    @Select("select * from wk_admin_role where remark = #{remark} limit 1")
    AdminRole selectByRemark(@Param("remark") String remark);

    /**
     * 根据角色类型和用户 id 查询角色列表
     *
     * @param type 角色类型
     * @param userId 用户 id
     * @return 角色列表
     */
    List<AdminRole> selectRoleByRoleTypeAndUserId(@Param("type") Integer type, @Param("userId") Long userId);

    /**
     * 根据多个角色 id 查询角色
     * @param roleIds 多个角色 id
     * @return 角色列表
     */
    List<AdminRole> selectByRoleIds(@Param("roleIds") List<Integer> roleIds);

    /**
     * 根据角色类型查询角色列表
     *
     * @param roleType 角色类型
     * @return 角色列表
     */
    @Select("select * from wk_admin_role where role_type = #{roleType}")
    List<AdminRoleBO> selectByRoleType(@Param("roleType") Integer roleType);

    /**
     * 根据父级 id 和角色 id 查询角色
     *
     * @param parentId 父级 id
     * @param roleId 角色 id
     * @return 角色列表
     */
    List<Integer> selectRoleMenu(@Param("parentId") Long parentId, @Param("roleId") Long roleId);

    /**
     * 根据角色类型查询角色
     *
     * @param type 角色类型
     * @return 角色列表
     */
    @Select("select role_id from wk_admin_role where role_type = #{type}")
    List<AdminRole> selectByType(@Param("type") Integer type);
}
